#ifndef SCT_ENCODE_AUDIOENC_H
#define SCT_ENCODE_AUDIOENC_H

#ifdef __cplusplus
extern "C"
{
#endif

#include <libavutil/opt.h>
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>

#ifdef __cplusplus
};
#endif

#include "sct/core/common.h"

#include "sct/encode/encodeinterface.h"

namespace sct
{
class CAudioEnc: public CEncodeInterface
{
public:
	CAudioEnc(const CodecType codecType);
	virtual ~CAudioEnc();

	virtual void init(const CEncodeParam & param);
	virtual void encodeOneFrame(const int64_t pts, const void* buf, const int len);
private:
	void _encodeOneFrame();

private:
	AVFrame * mFrame;
	AVCodec * mCodec;
	AVCodecContext * mCodecCtx;

	CEncodeParam mEncodeParam;

	int mEncBuffSz;
	uint8_t * mSwapBuff;
	int mSwapBuffLen;
};
}

#endif
